//
//  NSFileManager+JSKit.h
//  JSBasicFramework
//
//  Created by Apple on 2018/12/5.
//  Copyright © 2018 Apple. All rights reserved.
//



NS_ASSUME_NONNULL_BEGIN

/**
 *  目录类型枚举
 *  DirectoryTypeMainBundle  包含所有的资源文件和可执行文件
 *  DirectoryTypeDocuments   保存应用运行时生成的需要持久化的数据，iTunes会自动备份该目录，
 *                           苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下，iTunes备份和恢复的时候会包括此目录。
 *  DirectoryTypeLibrary     存储程序的默认设置和其他状态信息，iTunes会自动备份该目录。
 *  DirectoryTypeCache       -> Library/Caches 存放缓存文件，iTunes不会备份此目录，此目录下文件不会在应用退出删除。
 *                           一般存放体积比较大，不是特别重要的资源。
 *  DirectoryTypePreferences -> Library/Preferences 保存应用的所有偏好设置，iOS的Settings（设置）
 *                           应用会在该目录中查找应用的设置信息，iTunes会自动备份该目录。目录包含应用程序的偏好设置文件。您不应该直接创建偏
 *                           好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
 * DirectoryTypeTmp          保存应用运行时所需的临时数据，使用完毕后再将相应的文件从该目录删除。
 *                           应用没有运行时，系统也有可能会清除该目录下的文件，iTunes不会同步该目录，iPhone重启时，该目录下的文件会丢失。
 */
typedef NS_ENUM(NSInteger, DirectoryType)
{
    DirectoryTypeMainBundle = 0,    // 主要资源目录
    DirectoryTypeDocuments,         // 文件目录
    DirectoryTypeLibrary,           // 库目录
    DirectoryTypeCache,             // 缓存目录
    DirectoryTypePreferences,       // 偏好设置目录
    DirectoryTypeTmp                // 临时目录
};

typedef NS_ENUM(NSInteger, JSFileType)
{
    FileUnkwon = 0, // 未知
    FileTypeFolder,    // 文件夹
    FileTypeFile            // 文件
};
@interface NSFileManager (JSKit)
// 获取指定目录路径
+(NSString *)getSandboxSpecifyWithType:(DirectoryType) type;

/*!
 在指定目录下创建文件夹
 
 fileName : 格式: "(沙盒指定目录路径)/name/name"
 code  : 判断该路径是已存在 还是 新创建
 return : 文件存在 或者 创建成功 返回完整路径
 
 */
+(NSString *)creatSandboxSpecifyWithType:(DirectoryType) type subDirectory:(NSString *)fileName;

/*!
 获取指定路径下的文件夹名称 或者 文件名称
 
 fileType : 获取指定路径下所有文件目录或者 文件夹目录
 */
+(NSArray *)getSandboxSepcifySubFolderWithType:(DirectoryType) type subPath:(nullable NSString *)subPath fileType:(JSFileType) fileType;

/*!
 删除指定路径下的文件 或者 文件夹
 
 */
+(BOOL)removeSandboxSepcifySubFolderWithType:(DirectoryType) type subPath:(NSString *)subPath;

/*!
 移动文件
 
 */
+(BOOL)moveItemAtPathFormDirectoryType:(DirectoryType) atType
                               atsubPath:(NSString *) atSubPath
                       toDirectoryType:(DirectoryType) toType
                             tosubPath:(nullable NSString *) toSubPath;

/*!
 获取指定路径下文件类型
 
 */
+(JSFileType)judgeFileTypeSpecialPath:(NSString *) path;
+(BOOL)clearLocaCacheAtPath:(NSString *)path;

@end

NS_ASSUME_NONNULL_END
